
#ifndef COMMON_H
#define COMMON_H

#include <QString>
#include <QDateTime>

struct MowerInfoBase
{
    QString sn;
    QString wifi_mac;
    QString ip;
    QString bt_mac;
};

struct MowerInfoInDb : public MowerInfoBase
{
    qint32 id = -1; // 数据库中的唯一标识符
    QDateTime create_at;
    QDateTime update_at;
};


#pragma pack(push, 1)  // 确保1字节对齐
// 以太网帧头
struct eth_header {
    uchar dst_mac[6];
    uchar src_mac[6];
    ushort ether_type;  // 0x0806 for ARP
};

// ARP 数据包结构
struct arp_packet  {
    ushort htype;       // 硬件类型 (1 = Ethernet)
    ushort ptype;       // 协议类型 (0x0800 = IPv4)
    uchar  hlen;        // 硬件地址长度 (6 for MAC)
    uchar  plen;        // 协议地址长度 (4 for IPv4)
    ushort oper;        // 操作码 (1=request, 2=reply)
    uchar  sha[6];      // 发送方MAC
    uchar  spa[4];      // 发送方IP
    uchar  tha[6];      // 目标MAC
    uchar  tpa[4];      // 目标IP
};
#pragma pack(pop)  // 恢复默认对齐

#define ARPOP_REQUEST htons(1)
#define ARPOP_REPLY htons(2)

#endif // COMMON_H